// eg: https://www.cnblogs.com/everlose/p/12854807.html
// let lRUCache = new LRUCache(2);
// lRUCache.put(1, 1); // 缓存是 {1=1}
// lRUCache.put(2, 2); // 缓存是 {1=1, 2=2}
// lRUCache.get(1);    // 返回 1
// lRUCache.put(3, 3); // 该操作会使得关键字 2 作废，缓存是 {1=1, 3=3}
// lRUCache.get(2);    // 返回 -1 (未找到)
// lRUCache.put(4, 4); // 该操作会使得关键字 1 作废，缓存是 {4=4, 3=3}
// lRUCache.get(1);    // 返回 -1 (未找到)
// lRUCache.get(3);    // 返回 3
// lRUCache.get(4);    // 返回 4

// var LRUCache = function (capacity) {
//     this.cache = new Map();
//     this.capacity = capacity;
// };

// LRUCache.prototype.get = function (key) {
//     if (this.cache.has(key)) {
//         // 存在即更新
//         let temp = this.cache.get(key);
//         this.cache.delete(key);
//         this.cache.set(key, temp);
//         return temp;
//     }
//     return -1;
// };

// LRUCache.prototype.put = function (key, value) {
//     if (this.cache.has(key)) {
//         // 存在即更新（删除后加入）
//         this.cache.delete(key);
//     } else if (this.cache.size >= this.capacity) {
//         // 不存在即加入
//         // 缓存超过最大值，则移除最近没有使用的
//         this.cache.delete(this.cache.keys().next().value);
//     }
//     this.cache.set(key, value);
// };

// 获取和设置都是 先删再存

var LRUCache = function(capacity){
    this.cache = new Map();
    this.capacity = capacity;
}

LRUCache.prototype.get = function(key){
    if(this.cache.has(key)){
        let temp = this.cache.get(key);
        this.cache.delete(key);
        this.cache.set(key, temp);
        return temp
    }
    return -1;
}


LRUCache.prototype.put = function(key,value){
    if(this.cache.has(key)){
        this.cache.delete(key)
    }else if(this.cache.size >= this.capacity){
        this.cache.delete(this.cache.keys().next().value)
    }
    this.cache.set(key,value)
}





let cache = new Map();
cache.set('1', 1)
cache.set('2', 2)
let iter = cache.keys()
console.log(iter.next().value)
console.log(iter.next().value)
